/**
(?=pattern) 正向肯定查找 正向前瞻 也就是后面必须跟着什么东西
 */
//正向肯定查找 (?=[a-z]) 不会消耗掉字符  [a-z] 会消耗掉字符
console.log("1a".match(/\d(?=[a-z])[a-z]/));

//正向否定查找 正向否定前瞻 也就是后面不能跟着什么东西
console.log("1a".match(/\d(?![A-Z])[a-z]/));

//反向肯定
console.log("1a".match(/(?<=[a-z])\d[a-z]/)); // null
//反向否定
console.log("1a".match(/(?<![A-Z])\d([a-z])/)); // [ '1a', index: 0, input: '1a', groups: undefined ]

/* 

[ '1a', index: 0, input: '1a', groups: undefined ]

它的长度 是 1 

'1a' 表示 数组元素

index: 0, input: '1a', groups: undefined 表示属性

index: 0 再次 match 匹配 才会往后移 


groups: undefined 要和 ?<name> 结合使用，他有兼容性问题，使用时注意

*/

let array = ["1a"];
array.index = 0;
array.input = "1a";
array.groups = undefined;
console.log(array); // 打印结果 也是 [ '1a', index: 0, input: '1a', groups: undefined ]
